//
//  StarCalculation.h
//  MyPopStar
//
//  Created by tarena on 16/1/6.
//  Copyright © 2016年 ssnb. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "StarModel.h"

@interface StarCalculation : NSObject

/**
 *  @author ssnb, 16-01-08 09:01:26
 *
 *  新开始游戏时的初始化
 *
 *  @return 返回初始化后的星星数组
 */
+(allStarArray)getInitGameArray;

/**
 *  @author ssnb, 16-01-08 09:01:39
 *
 *  恢复游戏的时候的初始化方法
 *
 *  @return 返回历史星星数组
 */
+(allStarArray)getResumGameArray;
/**
 *  @author ssnb, 16-01-13 21:01:00
 *
 *  保存数据
 *
 *  @param arr 需要保存的数据
 */
+(void)saveResumGameArray:(allStarArray)arr;
/**
 *  @author ssnb, 16-01-08 09:01:14
 *
 *  判断选中点是否可以消除
 *
 *  @param gameArray 源数组对象
 *  @param point     选中的点
 *
 *  @return 返回是否可以消除
 */
+(BOOL)canChoose:(allStarArray) gameArray atPoint:(StarPoint)point;

/**
 *  @author ssnb, 16-01-08 09:01:53
 *
 *  返回选中点周围颜色相同的对象数组
 *
 *  @param gameArray 源数组对象
 *  @param point     选中点
 *
 *  @return 返回一维数组,存储选中数组对象
 */
+(columnArray)connectedStarModel:(allStarArray)gameArray atPoint:(StarPoint)point;

/**
 *  @author ssnb, 16-01-12 09:01:05
 *
 *  将选中的对象从数组中删除
 *
 *  @param gameArray 对象数组
 *  @param chooseArr 需要删除对象数组
 *
 *  @return 返回删除后的数组
 */
+(allStarArray)clean:(allStarArray)gameArray and:(chooseArray)chooseArr;

/**
 *  @author ssnb, 16-01-12 09:01:20
 *
 *  判断是否需要左移数组
 *
 *  @param gameArray 需要判断的数组
 *
 *  @return YES就是需要左移
 */
+(BOOL)canMoveLeft:(allStarArray)gameArray;

/**
 *  @author ssnb, 16-01-12 09:01:13
 *
 *  进行左移
 *
 *  @param gameArray 需要移动的数据
 *
 *  @return 返回移动后的数据
 */
+(allStarArray)moveLeft:(allStarArray)gameArray;

/**
 *  @author ssnb, 16-01-12 09:01:38
 *
 *  通过消灭的星星的个数来计算分数
 *
 *  @param count 消灭星星的个数
 *
 *  @return 返回获得分数
 */
+(NSInteger)scoreWithNumber:(NSInteger)count;
/**
 *  @author ssnb, 16-01-12 16:01:49
 *
 *  游戏结束时候的结算分数
 *
 *  @param count 剩余方块数
 *
 *  @return 结算后的分数
 */
+(NSInteger)gameOverScore:(NSInteger)count;
@end
